    package_spec ::=
     [PRAGMA SERIALLY_REUSABLE;]
     {
         collection_type_definition
       | record_type_definition
       | subtype_definition
       | collection_declaration
       | constant_declaration
       | exception_declaration
       | object_declaration
       | record_declaration
       | variable_declaration
       | cursor_spec
       | function_spec
       | procedure_spec
       | call spec
       | PRAGMA RESTRICT_REFERENCES
      }
     [ {
          collection_type_definition
        | record_type_definition
        | subtype_definition
        | collection_declaration
        | constant_declaration
        | exception_declaration
        | object_declaration
        | record_declaration
        | variable_declaration
        | cursor_spec
        | function_spec
        | procedure_spec
        | call spec
        | PRAGMA RESTRICT_REFERENCES
      }]...
    END [package_name];